package com.lncg.service;

/**
 * TCP连接管理服务接口
 * 负责管理TCP客户端连接，发送数据给指定客户端
 */
public interface ITcpConnectionService {

    /**
     * 添加TCP连接
     * @param clientKey 客户端标识 (IP:PORT)
     * @param ctx Netty Channel上下文
     */
    void addConnection(String clientKey, Object ctx);

    /**
     * 移除TCP连接
     * @param clientKey 客户端标识 (IP:PORT)
     */
    void removeConnection(String clientKey);

    /**
     * 发送数据给指定TCP客户端
     * @param clientIp 客户端IP
     * @param clientPort 客户端端口
     * @param data 要发送的数据（十六进制字符串）
     * @return 是否发送成功
     */
    boolean sendDataToClient(String clientIp, int clientPort, String data);

    /**
     * 发送字节数组数据给指定TCP客户端
     * @param clientIp 客户端IP
     * @param clientPort 客户端端口
     * @param data 要发送的字节数组数据
     * @return 是否发送成功
     */
    boolean sendDataToClient(String clientIp, int clientPort, byte[] data);

    /**
     * 获取当前连接数
     * @return 当前TCP连接数
     */
    int getConnectionCount();

    /**
     * 检查连接是否存在
     * @param clientIp 客户端IP
     * @param clientPort 客户端端口
     * @return 连接是否存在
     */
    boolean isConnectionActive(String clientIp, int clientPort);

    /**
     * 关闭指定客户端的连接
     * @param clientIp 客户端IP
     * @param clientPort 客户端端口
     * @return 是否成功关闭
     */
    boolean closeConnection(String clientIp, int clientPort);
}
